package com.hliushi.learn.dao;

import com.hliushi.learn.bean.Book;
import com.hliushi.learn.bean.BookClassWide;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface BookMapper {
    int deleteByPrimaryKey(Long bookId);

    int insert(Book record);

    int insertSelective(Book record);

    Book selectByPrimaryKey(Long bookId);

    int updateByPrimaryKeySelective(Book record);

    int updateByPrimaryKey(Book record);

    List<Book> selectAll();


    /**
     * .@Param注解  目标:  Parameter[形参上]
     * 如果你的mapper的方法需要多个参数, 这个注解可以被应用于mapper的方法参数来给每个参数一个名字
     * 否则, 多参数将会以它们的顺序位置来命名, 比如#{0}, #{1}, #{param1}, #{param2}
     * 使用@Param("bookId"), 参数应该被命名为#{bookId}
     *
     * @param updated 更新时间
     * @param bookId  bookId
     * @return 影响的行数
     */
    int updateByBookId(@Param("updated") Book updated, @Param("bookId") Long bookId);


    int insertList(@Param("list") List<Book> list);


    List<BookClassWide> selectJoinBookClass();
}